/* TODO this class needs to store the vessel's class,  hit points, upgrades, 
 * and refits */
package bfgca;

public class Vessel {

  static enum Type{
    //Type (Resource Capacity, Assault Point Capacity)
    Transport           (50, 5), 
    HeavyTransport      (100, 10), 
    Escort              (5, 0), 
    LightCruiser        (5, 0), 
    Cruiser             (20, 2), 
    HeavyCruiser        (20, 2),
    BattleCruiser       (20, 2), 
    GrandCruiser        (25, 3), 
    Battleship          (25, 3), 
    NidEscortDrone      (50, 2), 
    NidVanguardDrone    (50, 2),
    NidCruiser          (100, 5), 
    NidHiveShip         (200, 10), 
    OrkRok              (50, 4), 
    OrkHulk             (200, 20), 
    OrbitalDock         (20, 1), 
    Shipyard            (50, 3), 
    SpaceStation        (25, 4), 
    Blackstone          (50, 8), 
    ActivatedBlackstone (0, 0);
    
    private final int resourceCapacity;
    private final int assaultCapacity;
    
    Type(int rc, int ac){
      resourceCapacity = rc;
      assaultCapacity = ac;
    }
    public int resCap(){return resourceCapacity;}
    public int assaultCap(){return assaultCapacity;}
  }
  
  static enum Status{
    EnRoute,
    EnteringSystem,
    ExitingSystem
  }
  
  static enum Orders{
    Move,
    DefendPlanet,
    DefendSystem,
    EscortConvoy,
    BlockadePlanet,
    BlockadeSystem,
    AttackPlanet,
    AttackShips,
    Observe,
    RaidPlanet
  }
  
  private int speed;
  private Vessel.Type type;
  private Vessel.Status status;
  private Vessel.Orders orders;
  private Planet location;
  private String name;
  
  public Vessel(int s, Vessel.Type t, String n){
    this.name = n;
    this.speed = s;
    this.type = t;
  }
  
  public String getName(){ return this.name; }
  public int getSpeed(){ return this.speed;}  
  public String getType(){ return this.type.toString();}  
  public String getStatus(){ return this.status.toString();}
  public String getOrders(){ return this.orders.toString();}  
  public int getResourceCapacity(){ return this.type.resCap();}  
  public int getAssaultCapacity(){return this.type.assaultCap();}
  public Planet getLocation(){ return this.location; }
}
